

/**
 * 绘制图形验证码到Canvas
 * @param {string} code - 验证码文本
 * @param {string} canvasId - 画布元素ID
 */
function drawCaptcha() {
  const ctx = canvas.value.getContext('2d')
  ctx.clearRect(0, 0, 120, 40)

  // 绘制渐变背景
  const gradient = ctx.createLinearGradient(0, 0, 120, 0)
  gradient.addColorStop(0, '#fbaccc')
  gradient.addColorStop(1, '#a6c1ee')
  ctx.fillStyle = gradient
  ctx.fillRect(0, 0, 120, 40)

  // 绘制验证码文本
  for(let i = 0; i < code.length; i++) {
    ctx.save()
    ctx.translate(30 * i + 15, 20)
    ctx.rotate((Math.random() - 0.5) * 0.4)
    ctx.fillStyle = getRandomColor(50, 150)
    ctx.font = `${Math.floor(Math.random() * 10 + 20)}px Arial`
    ctx.fillText(code.value[i], -10, 10)
    ctx.restore()
  }

  // 绘制干扰线
  for(let i = 0; i < 5; i++) {
    ctx.strokeStyle = getRandomColor(100, 200)
    ctx.beginPath()
    ctx.moveTo(Math.random() * 120, Math.random() * 40)
    ctx.lineTo(Math.random() * 120, Math.random() * 40)
    ctx.stroke()
  }
}

// 辅助函数
function randomNum(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

function randomColor(min, max) {
  return `rgb(${randomNum(min, max)},${randomNum(min, max)},${randomNum(min, max)})`;
}
